package dao;

import domain.Book;
import domain.Chapter;
import domain.Word;

import java.util.List;

public interface BookDao {
    /**
     * 获取章节标题
     * @param bid 书籍id
     * @return Book实例化对象列表  只存储pid 与name
     */
    List<Chapter> getCapterNameList(int bid);

    /**
     * 获取章节内容
     * @param cid cid
     * @return 文章实例化对象
     */
    Chapter getCapter(int cid);

    /**
     * 获取所有人的共同书籍 uid为0
     * @return 书籍实例化列表
     */
    List<Book> getCommonBook();

    /**
     * 添加书籍对应的单词
     * @param word 单词
     * @param frequency 词频
     * @param bid 书籍id
     */
    void addBookWord(String word,int frequency,int bid);

    /**
     * 添加或上传书籍，上传后书籍id由数据库自动生成
     * @param cover 封面url
     * @param name 书籍名称
     * @param brief 书籍简介
     * @param uid 添加或上传者id
     */
    void addBook(String cover, String name, String brief, int uid);

    /**
     * 添加章节 ，章节id由数据库自增生成
     * @param bid 书籍id
     * @param name 章节名称
     * @param content 章节内容
     */
    void addCapter(int bid,String name,String content);

    /**
     * 删除书籍
     * @param bid 书籍id
     */
    void delBook(int bid);

    /**
     * 删除章节
     * @param cid 章节号
     */
    void delCapter(int cid);

    /**
     * 修改书籍信息(暂定章节不支持修改)
     * @param bid 书籍id
     * @param cover 书籍封面
     * @param name 名称
     * @param brief 简介
     */
    void modifyBook(int bid,String cover, String name, String brief);

    /**
     * 通过书籍获取书籍信息
     * @param bid 书籍id
     * @return 返回
     */
    Book getBookbybid(int bid);
    /**
     * 添加书籍对一个单词
     * @param wordList 单词实例化对象
     */
    void addBookWord(List<Word> wordList);

    /**
     * 删除书籍对应的单词
     * @param bid 书籍id
     */
    void delBookWord(int bid);
}
